package com.simple.cms.common.utils;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
    public enum DatePattern {
        /**
         * 年-月-日
         */
        day("yyyy-MM-dd"),
        /**
         * 年-月-日  时
         */
        hour("yyyy-MM-dd HH"),
        /**
         * 年-月-日  时:分
         */
        minute("yyyy-MM-dd HH:mm"),
        /**
         * 年-月-日  时:分:秒
         */
        second("yyyy-MM-dd HH:mm:ss"),
        /**
         * 年-月-日'T'时:分:秒
         */
        secondISO("yyyy-MM-dd'T'HH:mm:ss"),
        /**
         * 月-日  时:分
         */
        monthMinuteSimple("MM-dd HH:mm"),
        /**
         * 时:分
         */
        minuteSimple("HH:mm"),
        /**
         * 月-日
         */
        monthDay("MM-dd"),
        /**
         * 年月日时分秒
         */
        secondSimple("yyyyMMddHHmmss"),;

        private DatePattern(String value) {
            this.value = value;
        }

        private String value;
    }

    private static final DatePattern DEFAULT_DATE_PATTERN = DatePattern.second;


    public static String dateToString(Date date) {
        SimpleDateFormat format = new SimpleDateFormat(DEFAULT_DATE_PATTERN.value);
        return format.format(date);
    }

    public static String dateToString(Date date, DatePattern formatPattern) {
        SimpleDateFormat format = new SimpleDateFormat(formatPattern.value);
        return format.format(date);
    }

    public static Date stringToDate(String dateString) {
        SimpleDateFormat format = new SimpleDateFormat(DEFAULT_DATE_PATTERN.value);
        Date date = null;
        try {
            date = format.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return date;
    }

    public static Date stringToDate(String dateString, DatePattern formatPattern) {
        SimpleDateFormat format = new SimpleDateFormat(formatPattern.value);
        Date date = null;
        try {
            date = format.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return date;
    }
}
